今天要開始要做專題了qq好累好想睡
但今天的題目大意是:題目給你一個整數陣列 nums,你要找到一個 連續的子陣列(subarray),使它的總和最大,並回傳這個總和。
注意:
「子陣列」必須是 連續 的,不可以跳著選,至少要選一個元素,不能回傳空的。
class Solution {
public int maxSubArray(int[] nums) {
// 假設陣列至少有一個元素(LeetCode 保證)
int maxSoFar = nums[0]; // 到目前為止看到的最大子陣列和
int currentMax = nums[0]; // 以當前位置結尾的最大子陣列和
// 從索引 1 開始掃描(因為已經把索引0 當初始值處理)
for (int i = 1; i < nums.length; i++) {
// 要不要把當前元素 nums[i] 加到前一個子陣列(currentMax)上?
// 或者從 nums[i] 重新開始一段新的子陣列?取較大的那個。
currentMax = Math.max(nums[i], currentMax + nums[i]);
// 更新整體最大值
maxSoFar = Math.max(maxSoFar, currentMax);
}
return maxSoFar;
}
}